module jinji.config;

import jinji.common.type;

enum {
	/// 最大URL长度
	maxURLLength = 8182,

	/// 最大标签长度
	maxTagLength = 64,

	/// 最大名称字符数
	maxNameLength = 128,

	/// 最大描述字符数
	maxDescLength = 4000,
}

struct AppConfig {
	/// 最大重试次数
	//uint maxRetryTimes = 5;

	/// 重试延迟（毫秒）
	//uint retryDelay = 1000;

	/// UI根路径
	Path uiPath = `ui`;

	/// 用户数据目录
	Path userDataDir;

	/// 操作超时（毫秒）
	uint timeout = 10_000;

	/// 监听地址
	auto listen = ":7451";

	/// 令牌密钥
	string tokenSecretKey;

	/// 最大查询条件数
	uint maxFilters = 10;

	/// WSAPI最大连接数
	uint maxConn = 500;

	/// 初始权限
	uint initialPerm = 11;

	/// 最大数据库大小（KB）
	//uint maxDbSize = 10_240;

	/// 数据库名称
	Path dbPath = "data.db";

	/// 缩略图目录
	Path thumbDir;

	/// 外部程序（键：程序名，值：程序路径）
	Path[string] programs;
}

__gshared {
	private extern (C) {
		// 运行时参数
		bool rt_cmdline_enabled = false;
		bool rt_envvars_enabled = false;
		auto rt_options = [
			"gcopt=gc:precise", "scanDataSeg=precise"
		];
	}

	/// 全局App配置
	AppConfig C; // @suppress(dscanner.style.phobos_naming_convention)
}
